package SBD.CRUD;

import SBD.Servicios.Conexion;
import SBD.Servicios.FactoriaServicios;
import EP.Web.RelacionPaginas;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
* @class RelacionPaginaBD
* @author Mauricio Alvarez.
* @brief Esta clase tiene los metodos de operación a la base de datos de la clase RelacionPagina.
*/
public class RelacionPaginaBD
{

    /**
     *  @var private List<RelacionPaginas> ListaRelacionPaginas
     *  @brief Variable global que guarda la lista de instancias de tipo clase RelacionPaginas.
    */
    private List<RelacionPaginas> ListaRelacionPaginas = new ArrayList();

 
    //////////////////////////
    // OPERACIONES
    //////////////////////////

    /**
     * @brief Clase que carga los datos de las relaciones pagina de la base de datos
     * @param Cantidad Muestra.
     * @return List<RelacionPaginas>
    */
    public List<RelacionPaginas> CargarRelacionPagina(int CantidadMuestra) throws ClassNotFoundException, InstantiationException, IllegalAccessException, SQLException, Error, IOException
    {

        Conexion cdb = FactoriaServicios.getInstancia().getConexionBD();

        //Si se seleccionaron todas las filas de relacion páginas:
        if (CantidadMuestra == -1)
        {
            
            cdb.un_sql = "SELECT * FROM RELACION_PAGINAS";
            
            //CAMBIO: Se seleccionan las págians del MTURK:
            /*
            FileInputStream fis = new FileInputStream("C:\\Documents and Settings\\Mauricio\\Mis documentos\\NetBeansProjects\\Filtro\\SQL\\SQLRelacionPaginaMTURK.txt");
            InputStreamReader is = new InputStreamReader(fis, "ISO-8859-1");
            BufferedReader bf = new BufferedReader(is);
            String linea;
            String query = " ";

            while ((linea = bf.readLine()) != null) {
                  query = query + " " + linea;
            }
            
            fis.close();  
            cdb.un_sql = query;
             * 
             */
            
            cdb.resultado = cdb.un_st.executeQuery(cdb.un_sql);
            if (cdb.resultado != null)
            {
                while (cdb.resultado.next())
                {
                    RelacionPaginas rp = new RelacionPaginas();

                    //Se obtienen los atributos de relacion paginas:
                    rp.setId_relacion_pagina(cdb.resultado.getInt("id_relacion_pag"));
                    rp.setId_pagina_fuente(cdb.resultado.getInt("id_pagina_fuente"));
                    rp.setId_pagina_destino(cdb.resultado.getInt("id_pagina_destino"));
                    rp.setAnchor_text(cdb.resultado.getString("anchor_text"));
                    rp.setTexto_alrededor(cdb.resultado.getString("texto_alrededor"));
                    rp.setHeader(cdb.resultado.getString("header"));
                    rp.setTitle(cdb.resultado.getString("title"));

                    ListaRelacionPaginas.add(rp);
                }
            }else{
                //Generación de error
                //throw new Error(-1, "Consulta a Registro " + p.getUrl() + "a devuelto un recorset null. Ubicación= " +
                //        this.getClass().getName());
            }

        }//Si se seleccionaron todas las páginas desde interfaz.

        //Si se seleccionaron las k primeras páginas.
        if (CantidadMuestra >= 0)
        {
            cdb.un_sql = "SELECT * FROM RELACION_PAGINAS LIMIT 0, "+ CantidadMuestra +";";
            cdb.resultado = cdb.un_st.executeQuery(cdb.un_sql);
            if (cdb.resultado != null)
            {
                while (cdb.resultado.next())
                {
                    RelacionPaginas rp = new RelacionPaginas();

                    //Se obtienen los atributos de relacion paginas:
                    rp.setId_relacion_pagina(cdb.resultado.getInt("id_relacion_pag"));
                    rp.setId_pagina_fuente(cdb.resultado.getInt("id_pagina_fuente"));
                    rp.setId_pagina_destino(cdb.resultado.getInt("id_pagina_destino"));
                    rp.setAnchor_text(cdb.resultado.getString("anchor_text"));
                    rp.setTexto_alrededor(cdb.resultado.getString("texto_alrededor"));
                    rp.setHeader(cdb.resultado.getString("header"));
                    rp.setTitle(cdb.resultado.getString("title"));

                    ListaRelacionPaginas.add(rp);
                }
            }else{
                //Generación de error
                //throw new Error(-1, "Consulta a Registro " + p.getUrl() + "a devuelto un recorset null. Ubicación= " +
                //        this.getClass().getName());
            }

        }//Si se seleccionaron las k primeras páginas.

        return ListaRelacionPaginas;

    }//FIN CargarPagina

}//FIN CLASE RelacionPaginaBD